#!/usr/bin/python
# -*- coding: UTF-8 -*-

from kpautos.engine.case import Case
from kptest.config.enum import DeviceType, HostType, DeviceUtility


class BMC_SSH_02(Case):
    """
        Name:
            BMC_SSH_02
        Label:
            查看BMC版本信息
        PreCondition:
            1、BMC正常运行
        TestStep:
            1、执行ipmcget -d version命令
        ExpectedResult:
            A.检查返回值中可以显示iBMC芯片信息、BMC版本、uboot版本。
            B.检查返回值中可以正确显示产品信息、主板信息、网卡信息、Riser信息、硬盘背板信息、PSU信息

        Parameters:

        Remark:

    """

    # 测试执行前配置等准备操作
    def pre_test_case(self):
        self.device_dut = self.resource.get_device(device_type=DeviceType.Server, utility=DeviceUtility.DUT)
        self.os_host = self.device_dut.get_host(host_type=HostType.HostOS)
        self.cli_api = self.device_dut.get_api(ns_name="BmcCli")

    # 测试步骤
    def procedure(self):
        self.log_step("1、带外执行ipmcget -d version命令，获取版本信息")
        device_version = self.cli_api.cli_query_device_version()
        if device_version == None:
            raise Exception("带外获取FRU信息失败")
        self.log_info(f"查看版本信息的返回值为：{device_version}")
        self.log_step("2、查看iBMC芯片、BMC版本、uboot版本信息")
        bmc_chip = device_version['openUBMC']['IPMC_CPU']
        self.log_info(f"iBMC芯片为：{bmc_chip}")
        bmc_version = device_version['openUBMC']['Active_openUBMC_Version']
        self.log_info(f"iBMC版本为：{bmc_version}")
        uboot_version = device_version['openUBMC']['Active_Uboot_Version']
        self.log_info(f"uboot版本为：{uboot_version}")
        self.log_step("3、查看产品信息、主板信息、网卡信息、Riser信息、硬盘背板信息、PSU信息")
        product_info = device_version['Product']
        self.log_info(f"产品信息为：{product_info}")
        cpuboard_info = device_version['CPU_Board']
        self.log_info(f"主板信息为：{cpuboard_info}")
        pciecard_info = device_version['PCIe_Card']
        self.log_info(f"PCIE卡信息为：{pciecard_info}")
        riser_info = device_version['Riser_Card']
        self.log_info(f"Riser卡的信息为：{riser_info}")
        backplane_info = device_version['HDD_Backplane']
        self.log_info(f"硬盘背板的信息为：{backplane_info}")
        psu_info = device_version['PSU']
        self.log_info(f"PSU的信息为：{psu_info}")

    # 测试结束后恢复环境
    def post_test_case(self):
        pass